﻿using NDF.Framework.Models.Entities;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NDF.Test.DataAccess.NdfEFTest.Entities
{
    [Table("Com_User")]
    public class UserEntity
    {
        private string _loginCode;

        public UserEntity()
        {
            this.Key = Guid.NewGuid();
            this.CreateDate = DateTime.Now;
            this.LastModifyDate = DateTime.Now;
        }



        /// <summary>
        /// 获取或设置一个 <see cref="Int32"/> 值，该值表示实体对象的标识属性。这是一个自增长字段。
        /// </summary>
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public virtual int ID { get; set; }

        /// <summary>
        /// 获取或设置一个 <see cref="Guid"/> 值，该值表示实体对象的主键属性。这是一个全局唯一标识符（GUID）
        /// </summary>
        [Key]
        public virtual Guid Key { get; set; }

        


        public string Code { get; set; }

        public string LoginCode
        {
            get { return string.IsNullOrWhiteSpace(this._loginCode) ? this.Code : this._loginCode; }
            set { this._loginCode = value; }
        }

        public string Name { get; set; }

        public bool IsManager { get; set; }

        public bool IsValid { get; set; }

        public bool IsLocked { get; set; }

        public DateTime? LockDate { get; set; }

        public Guid? LockUser { get; set; }



        /// <summary>
        /// 获取或设置一个 <see cref="Byte"/> 值，该值表示实体对象的数据逻辑类型。该字段为扩展预留字段。
        /// </summary>
        public virtual byte Type { get; set; }

        /// <summary>
        /// 获取或设置一个 <see cref="Byte"/> 值，该值表示实体对象的数据标记。该字段为扩展预留字段。
        /// </summary>
        public virtual byte Flag { get; set; }

        /// <summary>
        /// 获取或设置一个 <see cref="Byte"/> 值，该值表示实体对象的数据状态。该字段为扩展预留字段。
        /// </summary>
        public virtual byte Status { get; set; }

        /// <summary>
        /// 获取或设置一个 <see cref="Guid"/> 值，该值表示实体对象的数据创建者。
        /// </summary>
        public virtual Guid? CreateUser { get; set; }

        /// <summary>
        /// 获取或设置一个 <see cref="DateTime"/> 值，该值表示实体对象的数据创建时间。
        /// </summary>
        [DataType(DataType.DateTime)]
        public virtual DateTime CreateDate { get; set; }

        /// <summary>
        /// 获取或设置一个 <see cref="Guid"/> 值，该值表示实体对象的数据最后修改者。
        /// </summary>
        public virtual Guid? LastModifyUser { get; set; }

        /// <summary>
        /// 获取或设置一个 <see cref="DateTime"/> 值，该值表示实体对象的数据最后修改时间。
        /// </summary>
        [DataType(DataType.DateTime)]
        public virtual DateTime LastModifyDate { get; set; }
    }
}
